package com.itany.corejava.code09_集合.list集合;

import java.util.ArrayList;
import java.util.List;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月17日 15:27
 */
public class Test01_ArrayList {
    public static void main(String[] args) {
        // defineList();
        listMethod();
    }

    public static void defineList() {

        // 创建一个初始容量为10的ArrayList集合
        //此时表示初始可以放10个元素，如果超出才会扩展容量
        // 此时通过泛型指定类型，如果没有指定类型，则默认是Object
        ArrayList list = new ArrayList();
        System.out.println(list);

        //获取当前集合中元素的个数
        System.out.println(list.size());
        // 添加元素
        list.add("admin");
        list.add(true);
        list.add(10);
        list.add(45.25);
        System.out.println(list.size());

        //创建一个指定初始容量的空集合
        ArrayList<String> list2 = new ArrayList<>(8);
        // list2.add(1);//报错，由于当前集合是String类型，集合中的元素只能是字符串
        list2.add("admin");
        list2.add("lucy");
        list2.add("jack");
        System.out.println(list2);


        ArrayList<Integer> list3 = new ArrayList<>();
        list3.add(1);
        System.out.println(list3);

        List<String> list4 = new ArrayList<>();
        System.out.println(list4);
    }


    public static void listMethod() {
        ArrayList<String> list = new ArrayList<>();
        // add()向集合的末尾添加指定元素，元素的顺序与放入的顺序是一致的
        list.add("admin");
        list.add("lucy");
        list.add("baby");
        list.add("coco");
        list.add("cici");
        list.add("coco");
        list.add("jack");
        list.add("cici");
        // add(index,值)在指定index的位置上添加元素值
        list.add(1, "huahua");

        //set(index,值)在指定index的位置上修改原有的元素值
        list.set(1, "哈哈");

        //remove(index)删除指定索引位置上的元素值
        list.remove(1);

        // remove(元素值)删除指定首次出现的元素值
        System.out.println(list.remove("coco"));
        ;
        System.out.println(list);

        ArrayList<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(6);
        list2.add(89);
        list2.add(9);
        list2.add(2);
        // 当集合是一个Integer类型
        // 当我直接remove填数字的时候是一个int类型，删除指定索位置的元素值
        // list2.remove(2);

        // 当集合是一个Integer类型
        // 可以将int类型进行装箱操作
        Integer i=2;
        list2.remove(i);
        System.out.println(list2);

        //get(index)根据索引值获取对应的元素值
        System.out.println(list2.get(2));

        //返回指定元素在集合中第一次出现的索引位置，如果不存在，返回-1
        System.out.println(list.indexOf("cici"));


        //返回指定元素在集合中最后一次出现的索引位置，如果不存在，返回-1
        System.out.println(list.lastIndexOf("cici"));


        //判断集合中是否包含admin
        System.out.println(list.contains("admin"));

        ArrayList<String> list3=new ArrayList<>();

        //判断指定集合是否为空，返回的是布尔值类型，相当于list3.size()==0
        System.out.println(list3.isEmpty());
        System.out.println(list3.size()==0);



    }
}
